import axios from 'axios'

/* ① 自定义适配器：手动拼 baseURL */
axios.defaults.baseURL = 'http://118.89.197.34/merchant'  
axios.defaults.adapter = function (config) {

  const fullUrl = axios.defaults.baseURL + config.url
  // console.log('🔍 实际带参 URL:', fullUrl)
	 const token = wx.getStorageSync('token')
	  // console.log('🔑 本次请求带上的 token:', token)
  return new Promise((resolve, reject) => {
	  // request.js 内，真正调用 wx.request 之前
	  // console.log('【Request URL】', config.baseURL + config.url)
	  // console.log('【Request Header】', config.header)
    wx.request({
      url: fullUrl,
      method: (config.method || 'GET').toUpperCase(),
      data:config.data,
      header: { ...config.headers,'wq-token': wx.getStorageSync('token'),'Content-Type': 'application/json' },
      success: res => resolve({ data: res.data, status: res.statusCode }),
      fail: reject
    })
	
  })
}

/* ② 创建实例（只保留一次） */
export const request = axios.create({
  timeout: 30000
})

/* ③ 请求/响应拦截 */
request.interceptors.request.use(config => {
	wx.showLoading({title:'加载中...',mask:true})
  console.log(`🚀 ${config.method?.toUpperCase()} ${config.url}`)
  return config
})

request.interceptors.response.use(res => {
	wx.hideLoading()
   if (res.status >= 500) {
        getApp().globalData.readOnly = true
        uni.showModal({ title: '系统维护', content: '当前仅可浏览', showCancel: false })
        return Promise.reject(new Error('SERVER_DOWN'))
      }
      //  票失效 → 清票 + 重登
      if (res.status === 401) {
        wx.removeStorageSync('token')
        getApp().globalData.token = ''
        uni.reLaunch({ url: '/pages/login/index' })
        return Promise.reject(new Error('TOKEN_INVALID'))
      }
      return res.data
}, err => {
	wx.hideLoading()
  console.error('❌ 网络错误', err)
  uni.showToast({ title: '网络错误', icon: 'none' })
  return Promise.reject(err)
})

export default request